/*
 *  This file is part of LifeBudget - Copyright 2010 Clifton Eaton
 *  ------------------------------------------------------------------
 *  LifeBudget is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  LifeBudget is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with LifeBudget.  If not, see <http://www.gnu.org/licenses/>.
 */
package org.lifebudget.app.client.events;

import com.extjs.gxt.ui.client.event.EventType;

/**
 * Stores all of the application specific <code>EventType</code> constants.
 * 
 */
public class AppEvents {

  /** EventType Init, responsible for notifying the application UI when it should initialize. */
  public static final EventType Init = new EventType();

  /** EventType Login, fired when a user first requests the LifeBudget app. */
  public static final EventType Login = new EventType();

  /** 
   * EventType Error, used whenever an error condition is encountered to notify the Event
   * Bus of an error.
   */
  public static final EventType Error = new EventType();
  
 
  
  //Paycheck Calc Events
  /** EventType PaycheckCalcSelected, fired when a PaycheckCalculator is selected. */
  public static final EventType PaycheckCalcSelected = new EventType();
  
  /** EventType  PaycheckCalcSelectionCleared, fired whenever a PaycheckCalculator is de-selected. */
  public static final EventType PaycheckCalcSelectionCleared  = new EventType();
  
  /** 
   * EventType PaycheckListLoaded, fired after the list of PaycheckCalculators are 
   * loaded to notify the PaycheckCalculatorEditorView that it should load. 
   */
  public static final EventType PaycheckListLoaded = new EventType();
  
  /** EventType PaycheckCalcUpdated, fired when a PaycheckCalculator is updated. */
  public static final EventType PaycheckCalcUpdated = new EventType();
   
  /** EventType NewPaycheckCalc, when a new PaycheckCalculator is created. */
  public static final EventType NewPaycheckCalc = new EventType();
  
  /** EventType DeletePaycheckCalc, fired when a PaycheckCalculator is deleted. */
  public static final EventType DeletePaycheckCalc = new EventType();
  
  /** 
   * EventType RefreshPaycheck, fired when a PaycheckCalculator is 
   * modified such that other components need to be updated. 
   */
  public static final EventType RefreshPaycheck = new EventType();
  
  /** EventType CategoryAmountRemoved, fired when a CategoryAmount is removed. */
  public static final EventType CategoryAmountRemoved = new EventType();
  
  /** EventType CategoryAmountsUpdated, fired when the CategoryAmounts are updated. */
  public static final EventType CategoryAmountsUpdated = new EventType();

  
  /** 
   * EventType UpdateSummary, fired when CategoryAmounts or a Paycheck 
   * estimated amount is changed which effects the summary. 
   */
  public static final EventType UpdateSummary = new EventType();
  
  //Category Events
  
  /** EventType CategoryAdded, fired when a Category is added. */
  public static final EventType CategoryAdded = new EventType();
  
  /** EventType CategoryChangesCommitted, fired when Categories are updated. */
  public static final EventType CategoryChangesCommitted = new EventType();
  
  /** EventType CategoryArchived, fired when a Category is archived. */
  public static final EventType CategoryArchived = new EventType();
  
  /** 
   * EventType RefreshCategory fired when the Categories have changed such
   *  that other components need to update. 
   */
  public static final EventType RefreshCategory = new EventType();

  //Transaction Events
  /** EventType TransactionChangesCommitted, fired when Transactions are updated. */
  public static final EventType TransactionChangesCommitted = new EventType();
  
  /** EventType TransactionRemoved, fired when a Transaction is removed. */
  public static final EventType TransactionRemoved = new EventType();
  
  /** EventType RefreshTransaction, fired when Transactions are changed such that they need to notify other components. */
  public static final EventType RefreshTransaction = new EventType();


}